/**
 * 位置获取后重新排序功能测试
 */

const locationUtil = require('./utils/location.js');

// 模拟商家数据
const mockBizList = [
  {
    id: 1,
    name: '商家A',
    pos: '39.9042,116.4074' // 北京天安门
  },
  {
    id: 2,
    name: '商家B',
    pos: '39.9163,116.3972' // 北京故宫
  },
  {
    id: 3,
    name: '商家C',
    pos: '39.9102,116.4024' // 北京王府井
  },
  {
    id: 4,
    name: '商家D',
    pos: '39.9202,116.4124' // 北京后海
  },
  {
    id: 5,
    name: '商家E',
    pos: 'invalid' // 无效坐标
  }
];

// 模拟用户位置（北京王府井附近）
const userLocation = {
  latitude: 39.9102,
  longitude: 116.4024
};

console.log('=== 位置获取后重新排序功能测试 ===\n');

// 测试1: 计算距离并排序
console.log('1. 计算所有商家距离:');
const bizListWithDistance = locationUtil.addDistanceToBizList(mockBizList, userLocation);
bizListWithDistance.forEach(biz => {
  console.log(`   ${biz.name}: ${biz.distanceText} (${biz.distance ? biz.distance.toFixed(0) + 'm' : '未知'})`);
});

console.log('\n2. 按距离排序:');
const sortedBizList = locationUtil.sortBizListByDistance(bizListWithDistance);
sortedBizList.forEach(biz => {
  console.log(`   ${biz.name}: ${biz.distanceText} (${biz.distance ? biz.distance.toFixed(0) + 'm' : '未知'})`);
});

// 测试2: 模拟位置获取后的重新加载
console.log('\n3. 模拟位置获取后的重新加载流程:');
console.log('   步骤1: 用户授权位置权限');
console.log('   步骤2: 获取用户位置成功');
console.log('   步骤3: 重新计算商家距离');
console.log('   步骤4: 按距离重新排序');
console.log('   步骤5: 更新页面显示');

// 测试3: 不同筛选类型的处理
console.log('\n4. 不同筛选类型的处理:');

// 距离筛选（需要全局排序）
console.log('   距离筛选 (nearby):');
console.log('   - 重新加载所有数据');
console.log('   - 计算所有商家距离');
console.log('   - 全局按距离排序');
console.log('   - 前端分页显示');

// 其他筛选（只计算距离，不排序）
console.log('\n   其他筛选 (recommend/sellout/star):');
console.log('   - 保持当前数据');
console.log('   - 重新计算距离显示');
console.log('   - 保持原有排序');

// 测试4: 性能考虑
console.log('\n5. 性能优化考虑:');
console.log('   - 距离筛选: 一次性加载所有数据，避免重复请求');
console.log('   - 其他筛选: 只重新计算距离，不重新请求数据');
console.log('   - 缓存机制: 已加载的数据不会重复请求');
console.log('   - 内存管理: 切换筛选类型时清理缓存数据');

// 测试5: 错误处理
console.log('\n6. 错误处理:');
console.log('   - 位置获取失败: 显示"未知"距离');
console.log('   - 坐标格式错误: 显示"未知"距离');
console.log('   - 网络请求失败: 保持原有数据');
console.log('   - 权限被拒绝: 提示用户授权');

console.log('\n=== 测试完成 ===');
console.log('\n修复内容:');
console.log('1. 在 getUserLocation() 成功后调用 reloadBizListWithLocation()');
console.log('2. 添加 reloadBizListWithLocation() 方法处理不同筛选类型');
console.log('3. 距离筛选时重新加载所有数据并排序');
console.log('4. 其他筛选时只重新计算距离显示');
console.log('5. 优化位置权限申请流程'); 